package com.jxdinfo.hussar.cloud.module.example.dljc.basketpoint.service;

import com.jxdinfo.hussar.cloud.module.example.dljc.basketpoint.model.BasketPoint;
import com.jxdinfo.hussar.cloud.module.example.dljc.basketpoint.vo.BasketImgPointVO;
import com.jxdinfo.hussar.cloud.module.example.dljc.basketpoint.vo.BasketPointPageVO;
import com.jxdinfo.hussar.cloud.module.example.dljc.basketpoint.vo.BasketPointSearchVO;
import com.jxdinfo.hussar.cloud.module.example.dljc.basketpoint.vo.BasketPointVO;
import com.jxdinfo.hussar.cloud.module.example.tjjc.towercrane.vo.DeviceInfoVO;
import com.jxdinfo.hussar.platform.core.base.apiresult.ApiResponse;
import com.jxdinfo.hussar.support.mp.base.service.HussarService;

import java.util.List;
import java.util.Map;

/**
 * 吊篮监测点服务类
 */
public interface BasketPointService extends HussarService<BasketPoint> {

    /**
     * 吊篮检测点新增
     *
     * @param basketPointSearchVO
     * @return 查询结果
     */
    ApiResponse<String> add(BasketPointSearchVO basketPointSearchVO);

    /**
     * 分页查询吊篮
     *
     * @param basketPointSearchVO
     * @return 查询结果
     */
    ApiResponse<BasketPointPageVO> findByPage(BasketPointSearchVO basketPointSearchVO);

    /**
     * 根据id查询吊篮
     *
     * @param id
     * @return 查询结果
     */
    ApiResponse<BasketPointVO> findOne(String id);

    /**
     * 条件查询
     *
     * @param basketPointSearchVO
     * @return 查询结果
     */
    ApiResponse<List<BasketPointVO>> findByList(BasketPointSearchVO basketPointSearchVO);

    /**
     * 根据设备类型获取吊篮监测设备列表
     * @param basketPointSearchVO 入参
     * @return 查询结果
     */
    ApiResponse<List<DeviceInfoVO>> findDeviceByProductType(BasketPointSearchVO basketPointSearchVO);

    /**
     * 吊篮检测点修改
     *
     * @param basketPointSearchVO
     * @return 查询结果
     */
    ApiResponse<String> updateBasketPoint(BasketPointSearchVO basketPointSearchVO);

    /**
     * 修改通知
     *
     * @param basketPointSearchVO
     * @return 查询结果
     */
    ApiResponse<String> updateNotice(BasketPointSearchVO basketPointSearchVO);

    /**
     * 根据id删除吊篮
     *
     * @param basketPointSearchVO
     * @return 查询结果
     */
    ApiResponse<String> deleteById(BasketPointSearchVO basketPointSearchVO);

    /**
     * 吊篮图片检测点条件查询
     *
     * @param basketPointSearchVO
     * @return 查询结果
     */
    ApiResponse<BasketImgPointVO> findByImgPonitList(BasketPointSearchVO basketPointSearchVO);

    /**
     * 吊篮检测点数量查询
     *
     * @param basketPointSearchVO
     * @return 查询结果
     */
    ApiResponse<List<Map<String, Object>>> findPointCount(BasketPointSearchVO basketPointSearchVO);
}
